Aquesta és la llibreta on s’integraran tots els apartats que anem treballant durant el curs. Començarem amb una caracterització de la demanda històrica d’un conjunt d’usuaris fictícis d’una comunitat energètica i durant les properes setmanes anirem ampliant les funcionalitats de la llibreta per tal de cobrir tot el que us anem explicant durant el curs.
ATENCIÓ! Tingueu en compte que podreu regenerar els resultats amb els fitxers de dades que vulgueu o necessiteu. Per tant, aquesta eina us podrà ser d’utilitat un cop comenceu a treballar.
Durant aquesta part del curs obtenim les dades de consum d’un seguit d’usuaris a través de la plataforma Datadis. Recordeu que us hem explicat com aconseguir credencials i descarregar informació d’aquesta plataforma en el seguent enllaç al Notion.
La metodología que utilitzarem per a que la llibreta interpreti correctament l’històric de demanda energètica dels usuaris de la comunitat és la seguent:
## S'han trobat 11 fitxers amb dades provinents de Datadis.
El potencial autoconsum col·lectiu que es pot fer en una comunitat energètica radica principalment en la complementarietat de les corbes de càrrega individuals. I en la possibilitat, en la mesura del possible, de moure consums en els moments en que l’energia produïda és superior a la demandada, ja que sinó es generen excedents.
Primerament, si tenim en compte l´últim any de dades disponibles per cadascún dels CUPS que integren la comunitat energètica, tenim la seguent corba de càrrega agregada:
Com es pot veure, l’agregació anterior ens permet anar a un detall molt precís sobre quina demanda agregada hi hagués hagut a cada hora i quina repartició entre els diferents usuaris. Tot i això, per entendre una mica més el de esón una mica complicats de dig
Una manera alternativa i que ens proporciona molta informació en un cop de vista al respecte de la demanda energètica agregada són els mapes de calor.
Una altra visualització interessant de la corba de demanda elèctrica agregada és la visualització polar en base a la posició solar durant les hores en les que hi ha insolació. Aquest gràfic en serà molt útil per veure que les característiques de les instal·lacions fotovoltaiques que instal·larem són les adients considerant la tipologia d’usuaris que tenim.
Segons els escenaris definits en els fitxers JSON (definit, per exemple a: Dades/PVGIS/escenaris.json), s’estima quina és la producció FotoVoltaica (FV) de cadascún dels camps definits. Cadascún d’ells anirà definit per un nom que ha de ser únic. A posteriori, el programa que genera la llibreta ja calcula quina és la generació agregada de tots els camps, és a dir, poden definir-se diferents tipologies de camps FV, amb canvis de posicions i/o característiques en cadascún d’ells.
Seguidament, visualitzem la producció FV de cadascún dels camps que están definits en el fitxer Dades/PVGIS/escenaris.json
Els anteriors resultats en forma de sèries temporals també els podem visualitzar com gràfics en coordenades polars, de forma similar com hem fet amb la demanda energètica en hores d’insolació. Aquests gràfics ens ajuden a comprendre i quantificar en un únic cop de vista els moments del dia en que tenim més producció fotovoltaica.
Finalment, volem quantificar quin serà l’autoconsum i l’exportació d’energia FV esperada. Primer, respecte a tots els usuaris de la nostra comunitat. Després ho quantificarem per cada usuari donant com a exemple una repartició de coeficients d’exemple en base proporcional al consum energètic individual.
coefs_nif <- df_ly %>% group_by(NIF) %>% summarise(coef=mean(consumption))
coefs_nif$coef <- coefs_nif$coef/sum(coefs_nif$coef)
df_ly_with_gen <- df_ly %>%
left_join(generation_df %>% filter(NomCampFV=="TotalFV") %>% select(-NomCampFV),by = c("ytime"="time")) %>%
left_join(coefs_nif,by="NIF")
df_ly_with_gen$generation <- df_ly_with_gen$generation*df_ly_with_gen$coef
df_ly_with_gen$surplus <-
ifelse(df_ly_with_gen$generation>df_ly_with_gen$consumption,
df_ly_with_gen$generation - df_ly_with_gen$consumption,0)
df_ly_with_gen$selfcons <-
ifelse(df_ly_with_gen$generation<=df_ly_with_gen$consumption,
df_ly_with_gen$generation, df_ly_with_gen$consumption)
df_ly_with_gen$selfconsperc <-
(df_ly_with_gen$selfcons/df_ly_with_gen$consumption) * 100
df_ly_with_gen$fromgrid <-
- df_ly_with_gen$consumption + df_ly_with_gen$selfcons
round(sum(df_ly_with_gen$selfcons,na.rm=T)/
sum(df_ly_with_gen$generation,na.rm=T),3)*100
## [1] 59.7
df_ly_with_gen %>% group_by(NIF) %>%
summarise(autoconsum=round((sum(selfcons,na.rm=T)/sum(generation,na.rm=T))*100,2),
excedent=round(((sum(generation,na.rm=T)-sum(selfcons,na.rm=T))/sum(generation,na.rm=T))*100,2),
xarxa=round((-sum(fromgrid,na.rm=T)/
sum(consumption,na.rm=T))*100,2)
)